热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

贡献者|可能会_OpenStackOcataHorizon开发——快速开始

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenStackOcataHorizon开发——快速开始相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了OpenStack Ocata Horizon 开发—— 快速开始相关的知识,希望对你有一定的参考价值。



一、写在前面

这篇文章主要介绍了OpenStack Ocata Horizon 根据官方的快速开始文档进行实际的调试验证,涉及在基于基本组件部署完成的情况下,源码部署Horizon开发环境,在后续的文章中将通过不同的文章来具体来说明开发,不涉及OpenStack Ocata 其他组件部署,由于作者能力或者理解不够如果错误请告知, 如果转载,请保留作者信息。

邮箱地址:jpzhang.ht@gmail.com
个人博客:https://jianpengzhang.github.io/
CSDN博客:http://blog.csdn.net/u011521019


二、Horizon (OpenStack Dashboard)

Horizon是一个基于Django的项目,旨在提供一个完整的OpenStack仪表板,以及一个可扩展框架,用于从可重用组件来构建新的仪表板。 openstack_dashboard模块是Django站点的实现,它使用Horizon APP来提供与各种OpenStack项目基于Web的交互。

项目页面:https://launchpad.net/horizon
蓝图和功能规格:https://blueprints.launchpad.net/horizon
问题跟踪:https://bugs.launchpad.net/horizon
源代码:https://github.com/openstack/horizon
代码审查:
[https://review.openstack.org/#q,status:open+project:openstack/horizon,n,z]
(https://review.openstack.org/#q,status:open+project:openstack/horizon,n,z)
持续集成:
Jenkinshttps://jenkins.openstack.org ;
Zuulhttp://status.openstack.org/zuul


三、使用Horizon

请参阅doc/source/topics/install.rst 有关如何在OpenStack中安装Horizon。 它描述了示例步骤,并提供了更详细的设置和配置的指针。也可以在http://docs.openstack.org/developer/horizon/topics/install.html上找到。

Horizon界面功能使用请参考:https://docs.openstack.org/user-guide/common/conventions.html


四、开发人员入门

doc/source/quickstart.rst 或http://docs.openstack.org/developer/horizon/quickstart.html介绍如何设置Horizon开发环境并开始开发。


五、构建贡献者文档

OpenStack Horizon 源码包目录中有一个目录为:horizon-stable-ocata/doc:

.
├── Makefile
└── source
├── browser_support.rst
├── conf.py
├── contributing.rst
├── faq.rst
├── glossary.rst
├── images
├── index.rst
├── intro.rst
├── plugin_registry.rst
├── quickstart.rst
├── ref
├── testing.rst
├── topics
└── tutorials

这里面是由贡献者撰写的关于Horizon使用的文档,与http://docs.openstack.org/developer/horizon/quickstart.html内容是一直的,如果觉得网页浏览查看速度慢或者环境限制不能上网可以通过构建成html在本地进行浏览,源文件使用reStructuredText维护在doc/source目录中,由Sphinx构建.

自动建筑命令:

$ ./run_tests.sh --docs

如果想知道更多run_tests.sh的功能,可以./run_tests.sh --help查阅,通过该方式构建文档,通过virtualenv建立一个隔离的环境。

手动建筑命令:

$ tools / with_venv.sh sphinx-build doc / source

doc/build/html目录中:

.
├── browser_support.html
├── contributing.html
├── faq.html
├── genindex.html
├── glossary.html
├── _images
├── index.html
├── intro.html
├── _modules
├── objects.inv
├── plugin_registry.html
├── py-modindex.html
├── quickstart.html
├── ref
├── search.html
├── searchindex.js
├── _sources
├── _static
├── testing.html
├── topics
└── tutorials

六、Horizon UI开发环境部署

这里认为你已经部署好了一个openstack ocata基础环境,仅演示手动部署horizon UI开发环境。


(1)、基础准备

通过Virtualenv,创建一个隔离的horizon部署环境,
pip安装virtualenv:

apt-get install python-pip
pip install virtualenv 或者 apt-get install python-virtualenv

创建一个独立的Horizon运行环境:

virtualenv --no-site-packages horizon.venv
输出:
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/work/horizon.venv/bin/python2
Also creating executable in /home/work/horizon.venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

source进入该环境:

source horizon.venv/bin/activate
(horizon.venv) root@ubuntu:/home/work#

退出当前的venv环境,使用deactivate命令:

(horizon.venv) root@ubuntu:/home/work# deactivate
root@ubuntu:/home/work#

(2)、安装 Horizon

下载 Horizon 代码:

git clone https://github.com/openstack/horizon.git
cd horizon/

安装 Horizon 用于开发:在horizon目录下执行,

pip install -e .

出错:

_setup/include/cext.h:34:20: fatal error: Python.h: No such file or directory
#include "Python.h"

执行如下命令解决问题,在重复执行上面的命令:

sudo apt-get install -y libxml2-dev libxslt1-dev zlib1g-dev python3-pip

配置环境:

cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py

vi openstack_dashboard/local/local_settings.py

ALLOWED_HOSTS = '*'
# ...
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default' # 如果 Domain 的 ID 不是 default,则为对应的 ID
# ...
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
# ...
OPENSTACK_HOST = "172.16.17.59" # 控制节点IP地址
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" #根据你的环境自己配置这个参数,这里我是‘user’
# ...
OPENSTACK_API_VERSIONS =
"identity": 3,
"image": 2,
"volume": 2,
# ...
# 根据你的网络环境配置这里的参数
OPENSTACK_NEUTRON_NETWORK =
#...
'enable_router': False,
'enable_quotas': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,

初始化静态文件 注意:一定要先执行此步骤再启动服务!否则再执行因为缓存还是不能正常运行,需要在 collectstatic 时增加 -c 参数

python manage.py collectstatic -l
python manage.py compress --force

启动 Horizon 项目:

python manage.py runserver 0.0.0.0:8001

出错:

AttributeError: DjangoTranslation instance has no attribute 'plural'

执行如下命令解决问题:

cd horizon/openstack_dashboard
django-admin compilemessages

(3)、小结

完成上述配置,一个简单的 OpenStack UI 开发环境就搭建完成了。当然每个人的环境不一致,可能会遇到一些奇怪的问题,需要静下心满满解决这些问题。


推荐阅读
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • 本文介绍了如何在Django项目中使用django-crontab库来设置和管理定时任务,包括安装、配置、编写定时任务以及常见问题的解决方案。通过具体实例,帮助开发者快速掌握在Django中实现自动化任务的方法。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • 1.增加视图函数#Http:127.0.0.1booksdefshow_books(request):booksBookInfo.objects.all()returnrend ... [详细]
  • 本文详细介绍如何结合Django框架和DRF(Django REST Framework)来设计一套有效的全局异常处理系统。这套系统不仅能够妥善处理DRF引发的异常,还能兼容Django自带的admin界面异常处理逻辑。 ... [详细]
  • 本文详细探讨了如何通过分析单个或多个线程在瓶颈情况下的表现,来了解处理器资源的消耗。无论是单进程还是多进程环境,监控关键指标如线程数量、占用时间及调度优先级等,有助于揭示潜在的性能问题。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 日志记录对于软件开发至关重要,特别是在调试和维护阶段。通过日志,开发者能够追踪错误源头并了解系统的运行状态。本文将探讨如何在Django框架中有效配置和使用日志记录功能。 ... [详细]
author-avatar
罗伯特1980_823
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有